# Reference: <https://postmarketos.org/devicepkg>
# Maintainer: Jan Jasper de Kroon <jajadekroon@gmail.com>
pkgname=device-pine64-pinephonepro
pkgdesc="PINE64 PinePhone Pro"
pkgver=4
pkgrel=3
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
# pmb:strict is required for grub
options="!check !archcheck pmb:strict"
depends="
	alsa-ucm-conf>=1.2.6.2
	eg25-manager>=0.4.2
	linux-pine64-pinephonepro
	postmarketos-base>=25-r1
	fwupd>=1.8.6
	soc-rockchip-rk3399
	"
makedepends="
	devicepkg-dev
	grub
	grub-efi
	"
subpackages="
	$pkgname-nonfree-firmware:nonfree_firmware
	$pkgname-gnome
	$pkgname-openrc
	$pkgname-sway
	$pkgname-x11
	"
source="
	51_keyboard.gschema.override
	90-modem-eg25.rules
	deviceinfo
	modules-initfs
	modemmanager.conf
	ppkb.sh
	setup-modem.sh
	ucm/HiFi.conf
	ucm/PINE64-PinePhonePro-.conf
	ucm/VoiceCall.conf
	sway-pinephone-keyboard.conf
	x11-pinephone-keyboard.conf
	"

build() {
	devicepkg_build $startdir $pkgname

	grub-mkimage \
		--prefix="/grub" \
		--output="bootaa64.efi" \
		--format="arm64-efi" \
		--compression="xz" \
		\
		all_video \
		cat \
		configfile \
		disk \
		echo \
		efi_gop \
		fat \
		gzio \
		help \
		iso9660 \
		linux \
		ls \
		normal \
		part_gpt \
		part_msdos \
		search \
		search_label \
		test \
		true
}

package() {
	devicepkg_package $startdir $pkgname

	# Grub / bootloader
	install -Dm644 -t "$pkgdir"/boot/EFI/Boot \
		"$srcdir"/bootaa64.efi

	# Alsa usecase manager config
	install -Dm644 -t "$pkgdir"/usr/share/alsa/ucm2/PinePhonePro \
		"$srcdir"/HiFi.conf \
		"$srcdir"/PINE64-PinePhonePro-.conf \
		"$srcdir"/VoiceCall.conf
	mkdir -p "$pkgdir"/usr/share/alsa/ucm2/conf.d/simple-card
	ln -s /usr/share/alsa/ucm2/PinePhonePro/PINE64-PinePhonePro-.conf \
		"$pkgdir"/usr/share/alsa/ucm2/conf.d/simple-card/PINE64-PinePhonePro-.conf
	# Below link is a temporary workaround until next Tow-Boot Release
	# https://github.com/Tow-Boot/Tow-Boot/pull/171
	ln -s /usr/share/alsa/ucm2/PinePhonePro/PINE64-PinePhonePro-.conf \
		"$pkgdir"/usr/share/alsa/ucm2/conf.d/simple-card/simple-card.conf
	# Modem
	install -Dm755 "$srcdir"/setup-modem.sh \
		"$pkgdir"/usr/bin/pinephone_setup-modem
	install -Dm644 "$srcdir"/90-modem-eg25.rules -t \
		"$pkgdir"/usr/lib/udev/rules.d/
	install -Dm644 "$srcdir"/modemmanager.conf \
		"$pkgdir"/etc/conf.d/modemmanager

	# Keyboard config
	install -Dm755 "$srcdir"/ppkb.sh "$pkgdir"/etc/profile.d/ppkb.sh
}

nonfree_firmware() {
	pkgdesc="Wifi, Bluetooth and video-out firmware"
	depends="
		linux-firmware-brcm
		linux-firmware-rockchip
		"
	mkdir "$subpkgdir"
}

gnome() {
	install_if="$pkgname=$pkgver-r$pkgrel postmarketos-base-ui-gnome"
	install -Dm644 "$srcdir"/51_keyboard.gschema.override -t \
		"$subpkgdir"/usr/share/glib-2.0/schemas
}

openrc() {
	install_if="$pkgname=$pkgver-r$pkgrel openrc"
	install="$subpkgname.post-install $subpkgname.post-upgrade"

	mkdir -p "$subpkgdir"
}

sway() {
	install_if="$pkgname=$pkgver-r$pkgrel sway-virtual"
	install -Dm644 "$srcdir"/sway-pinephone-keyboard.conf \
		"$subpkgdir"/etc/sway/config.d/pinephone_keyboard.conf
}

x11() {
	install_if="$pkgname=$pkgver-r$pkgrel xorg-server"
	install -Dm644 "$srcdir"/x11-pinephone-keyboard.conf \
		"$subpkgdir"/etc/X11/xorg.conf.d/pinephone-keyboard.conf
}

sha512sums="
2d68ffe143f633a86670f30e45dbad1cc313f219f22b7cd3319ab44bb7209c20cb29f2ff2c60c92390154af9c9a6815c4186be555364cf31552005eba024c0e7  51_keyboard.gschema.override
98e9dcfb36dd5843ff441b148e3bffb70757c59601c5f01f55a584e8f017c7ca73f2275c1bff46e4236dd8174df36a43d10abf9b8dadee988b962036846dc6ed  90-modem-eg25.rules
38e7111dd8ea40f52ba7f185ab58ff37d50619ae2df2f104cb3a84aba5ab082409fae3721ced5834f698f7f2766e98af86e9315ac31e2189c6936f92b7374450  deviceinfo
3ab1a9482d97739b03299f9237d15cb1d1d76ca2298bc6c1b4d1214590464cb13139d1a9c98c3eb7761ef8a5db060d5e365b38efcac57ed9ae34a1d12657e3f5  modules-initfs
c5006c38828eb519917d57756f7831c4552feffef2d4922a384073f6a551535f615ad397d784e313818e0b943e1f6212bcca0aff9ce37da60b29547b1631f24b  modemmanager.conf
43f67e94491791685cdbb4874bb3034b1d297bdf3d23e7405c45ba8c58de72b4fb6a9943b79f46ef7b8f4dbc4d9db254ebec8eb3453d720a5a8fad277c6a9d88  ppkb.sh
420ee1d7522d4d56c2909580fd6ba7580483ca5455b13eb6d22e700063ce0c1a5c6d2f5b161dfce0d777636fe9a712aa82f38a0585f2feabea3785b02bae7515  setup-modem.sh
1684514a6b814a83473e9da8855fd776cf3f31a2be1f8834c370f710428b4ee305559e275be52894d167ccd1e32f8f1c8586f8a072f19e44b46caec9f504d453  HiFi.conf
9c6edbe7ea387baf9bfa6c4a46b28c4fe274ab0994e0a1640012048407e6679c437de43cc50e6778c9a852132eaa680de3fd4e0256d36455d1dd57aa729ac8be  PINE64-PinePhonePro-.conf
27214fcf94823c3a9deff01c4b7a1cfc6dc8c117d9b5643fea9a15835a04e59524d2a90f522aa3c7440b94cd1b9d9938413abcfdaa838efb008c87eeae7de2e8  VoiceCall.conf
bb11151e246d16e071761ebb35ca7f8b8cedbad8366e9bac6aed30554a795877cc9dccbe69ecca4b19b6f72bd87e613705f3ae4f2f40d2f9c2d09cc179999d59  sway-pinephone-keyboard.conf
a7b49a638f664f7682ce6b00eb4d1ae26a429e89354056de05fb49d25fc9555d7f80e6d8f4b0a250878a4e7823860fd156068ed6604ce6cf58badef45c545161  x11-pinephone-keyboard.conf
"
